Application management within deployable object hierarchy

ABSTRACT

The management of applications in a computing environment often involves a significant number of computing operations, such as acquiring the application, deploying data objects in various locations, and configuring the application with respect to the deployed device. Conventional computing environments may provide inadequate support throughout a typical application life cycle, especially for a computing environment distributed across many devices. Instead, the computing environment may be represented in a deployable object hierarchy that may be distributed to various devices. An application management service may therefore be provided to install representations of the application in the object hierarchy, and to support many other aspects of the application life cycle, such as application discovery, sharing, updating, and removal. The devices may therefore provide the applications of the computing environment to the user in a consistent manner with reduced manual management among the devices comprising the computing mesh.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of, and claims priority under 35U.S.C. § 120 to, U.S. patent application Ser. No. 12/052,550, entitled“Application Management Within Deployable Object Hierarchy,” filed onMar. 20, 2008, the entirety of which is hereby incorporated by referenceas if fully rewritten herein.

BACKGROUND

Many computing environments comprise a large and diverse set of objectsmanaged by a set of object systems. For example, a computing environmentmay comprise a set of files managed by a file system, one or moredatabases managed by a database system, a set of executable binariesrepresenting applications and managed by an assembly cache, a set ofuser profiles managed by a user profile component of an operatingsystem, and various data caches managed by data caching components, suchas a set of copied items managed by a copy buffer of the operatingsystem, a set of undo actions managed by an undo component of theoperating system, and a set of “most recently used” items managed by anitem usage tracking component of the operating system. Moreover, suchobjects may be exchanged among a plurality of devices operated by one ormore users, and according to one or more operations (e.g., an objectsynchronization operation that merges two object sets and an objectmirroring operation that adjusts a target object set to match a sourceobject set.) In this manner, the objects are loosely organized through aset of object systems and aggregated to represent the computingenvironment.

Application management within conventional computing environments ofteninvolves considerable user involvement. For example, a user mayindependently discover a desired application, and may procure aninstaller package, such as a setup executable or a CD-ROM containingsetup files. The user may then utilize an application installer thatfacilitates the deployment of the application in the computingenvironment, such as by copying files to specific locations and creatingregistration information. However, following application deployment,computing environments typically provide little ongoing support for theapplication, sometimes comprising only an uninstaller application.Common maintenance tasks such as execution, sharing, synchronization,and updating are commonly relegated to the application. Moreover, thedeployment of the application on one computer system or device rarelyenables or facilitates the deployment of the application on othercomputer systems or devices, even if operated by the same user andutilized for a common purpose on two or more such platforms.

SUMMARY

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key factors oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter.

The organization of objects within a computing system as a disjointed,loosely aggregated set of object systems may create several problems.For example, it may be difficult to present a consistent computingenvironment to the user through various devices, especially if thedevices vary in capabilities (e.g., a high-performance personalworkstation, a browser-based public terminal, and a low-performancecellphone device.) As another example, applying services to the objects,such as synchronization and backup, may involve interfacing with eachobject system to affect the objects managed thereby, and suchinterfacing may vary among object systems. As a third example, relatinga diverse set of objects (such as all of the objects comprising anapplication) may be difficult due to the incomplete cooperation of themanaging object systems.

An alternative technique for representing the objects comprising thecomputing environment involves organizing the objects in an objecthierarchy, which may be hosted by a computing environment host. If theobjects are represented in a uniform manner and managed in a consistentway by an object system, a set of services may be devised to apply toall of the objects of the computing environment. Moreover, the objecthierarchy may be delivered to various devices to represent the samecomputing environment (including the same user profiles, applications,data files, etc.), and each device may render the computing environmentin a consistent manner but customized based on the capabilities of thedevice (e.g., a hard keyboard interface for receiving data entry from akeyboard device attached to a workstation, and a touchscreen softwarekeyboard interface for receiving data entry from a cellphone device.)

Within an object hierarchy of this nature, application management tasksmay be performed. The computing environment host may facilitate theacquisition of the application, the association of the application witha device, and the deployment of the application on the device. Therepresentation of the application as a set of objects in the deployableobject hierarchy may facilitate common application management tasks. Asa first example, the application may be readily deployed, and in manyscenarios automatically deployed, on a plurality of computer systems anddevices that are represented in the object hierarchy. For instance, afirst version of the application may be deployed to a workstation; asecond version of the application may be deployed as a web orweb-enabled application for use with a public terminal; and a thirdversion of the application may be deployed as a reduced-functionalityapplication for use on a low-power cellphone device. As a secondexample, the computing environment host may facilitate the updating ofthe application (e.g., patching of application resources with updatedversions, or deployment of new content for use with the application) byaccordingly adjusting the object hierarchy and deploying the adjustmentsto the devices by synchronizing the hosted and deployed versions of theobject hierarchy.

Moreover, the representation of the application as a set of objects inthe deployable object hierarchy may also enable new features. As a firstexample, the computing environment may enable a user to share anapplication with a second user, or an aspect of an application session,by deploying a specific portion of the object hierarchy to the seconduser's device, computer system, or computing environment host. Forinstance, a first user may choose a set of song objects to play on afirst computer through a media player application, and may choose toshare the media player application session with a second user (e.g., bystreaming the audio of the media player application to the second user.)As a second example, the configuration of the application may besynchronized across devices and computer systems as part of the objecthierarchy. Device-independent application properties (e.g., custom wordsadded to a spell-check dictionary) may be automatically propagated toall such devices and computer systems, while device-specific applicationproperties may be specified for respective devices by the computingenvironment host. In this manner, the application management service ofthe computing environment host may support the discovery, deployment,use, and removal of applications on various computer systems and devicesoperated by one or more user.

To the accomplishment of the foregoing and related ends, the followingdescription and annexed drawings set forth certain illustrative aspectsand implementations. These are indicative of but a few of the variousways in which one or more aspects may be employed. Other aspects,advantages, and novel features of the disclosure will become apparentfrom the following detailed description when considered in conjunctionwith the annexed drawings.

DESCRIPTION OF THE DRAWINGS

FIG. 1 is an illustration of a typical application life cycle within acomputing environment.

FIG. 2 is an illustration of an exemplary interaction of a computingenvironment host with various computing environment rendering devices.

FIG. 3 is a flow diagram illustrating an exemplary method of managing adeployment of an application in an object hierarchy representing acomputing environment upon a device.

FIG. 4 is a component block diagram illustrating an exemplary system formanaging the deployment of at least one application managed by anapplication store to an object hierarchy representing a computingenvironment upon at least one device.

FIG. 5 is a component block diagram illustrating another exemplarysystem for managing the deployment of applications to an objecthierarchy representing a computing environment upon at least one device.

FIG. 6 is a component block diagram illustrating yet another exemplarysystem for managing the deployment of applications to an objecthierarchy representing a computing environment upon at least one device.

FIG. 7 is a component block diagram illustrating a portion of anexemplary system for managing the deployment of applications to anobject hierarchy representing a computing environment upon at least onedevice.

FIG. 8 is a component block diagram illustrating another portion of anexemplary system for managing the deployment of applications to anobject hierarchy representing a computing environment upon at least onedevice.

FIG. 9 is a component block diagram illustrating yet another portion ofan exemplary system for managing the deployment of applications to anobject hierarchy representing a computing environment upon at least onedevice.

FIG. 10 is a component block diagram illustrating yet another exemplarysystem for managing the deployment of applications to an objecthierarchy representing a computing environment upon at least one device.

FIG. 11 illustrates an exemplary computing environment wherein one ormore of the provisions set forth herein may be implemented.

DETAILED DESCRIPTION

The claimed subject matter is now described with reference to thedrawings, wherein like reference numerals are used to refer to likeelements throughout. In the following description, for purposes ofexplanation, numerous specific details are set forth in order to providea thorough understanding of the claimed subject matter. It may beevident, however, that the claimed subject matter may be practicedwithout these specific details. In other instances, well-knownstructures and devices are shown in block diagram form in order tofacilitate describing the claimed subject matter.

A conventional computing environment typically includes a large andvaried array of applications, ranging from small tools with a simplepurpose, such as clocks and calculators, to large suites of complex andinterrelated applications, such as software integrated developmentenvironments and productivity suites. Applications may also comprisemedia, such as a multimedia player and the media objects renderedthereby (e.g., one or more electronic books to be rendered by a readerapplication), games, screen savers, device drivers for managing varioustypes of hardware, etc. Applications may be deployed locally (e.g.,through executable binaries and resources deployed to the user'sdevice), remotely (e.g., web applications that run on a remote serverand communicate with a user through a web browser), or a combinationthereof (e.g., locally installed applications that utilize remoteresources, such as email clients configured to access network-accessibleemail archives.) An operating system is usually provided to host andmaintain the applications and to provide user access to the applicationsthrough an application launcher and associations with data objectsrelated thereto.

FIG. 1 illustrates a typical application life cycle 10 exhibited by anapplication in a computing environment. The application life cycle 10performed within a typical computing environment may involve asignificant number of operations, such as copying data objects, writingand reading configuration information, and requesting and receivingobjects from servers over a computer network. The application life cycle10 usually begins with procurement 12, wherein the user selects theapplication to be made accessible in the computing environment.Procurement 12 typically includes discovery 14, wherein the user becomesaware of the application, such as through user-driven browsing of anapplication library or an advertising suggestion. Procurement 12 alsotypically includes acquisition 16, wherein the user obtains theresources of the application and arranges permission to use theapplication. For locally installed applications, acquisition 16 mayinvolve downloading an installer application from an application server;whereas web-accessible applications may involve signing up with theprovider of the web application, such as by creating a user account fora webmail service. Acquisition 16 may also involve a transaction, suchas a payment of money, and licensing, such as presenting an end-userlicense agreement (EULA) to a user and soliciting an acceptance of theterms and conditions thereof. Part or all of procurement 12 maysometimes be omitted, such as through preinstalled applications madeavailable to a user as default components of a new computingenvironment.

After or concurrent with procurement 12, the application life cycle 10often involves installation 18, wherein the local computing environmentis configured to provide access to the program. Installation 18sometimes involves mapping 20, wherein a particular device is configuredto use the application. Mapping 20 may involve a user designation of aparticular device for accessing the software (e.g., selecting acellphone device on which an application is to be deployed), and/orauthorization of a device for using the software (e.g., through productactivation.) Installation 18 also involves deployment 22, wherein theresources comprising the application are deployed on one or more mappeddevice (e.g., creating application folders, placing application binariesin such folders, registering code libraries, and writing configurationinformation to system registries and configuration files.) Deployment 22may also involve configuring the computing environment to provide accessto the application, such as by registering the application with anapplication launcher, associating the application with data objectsrelated thereto (e.g., identifying a media application as a media playerfor certain types of media objects), and/or configuring the computingenvironment to launch the application spontaneously upon systeminitialization or in response to particular events. Deployment 22 mayalso involve displaying documentation to assist the user in using theapplication. In some scenarios, installation 18 may involve theconfiguration of remote resources, such as registering a device with anetwork server or configuring a network server to host the applicationfor the device. In other scenarios, installation 18 may be reduced oromitted; e.g., a locally deployed application may comprise an executablebinary that runs without configuration or installation, and a webapplication may not involve any type of installation on a local device.

After procurement 12 and installation 18, the application may be readyfor use 24 by one or more users. Use 24 typically involves execution 26,which may begin, e.g., by launching the application or activating a dataobject associated with the application. Execution 26 may also includethe acquisition of additional content, such as new media objects thatmay be rendered by a media player. Use 24 also involves updating 28,which includes ongoing changes to the application, such as patching toprovide new versions of the application or the maintenance of resourcesutilized thereby (e.g., an antivirus package that receives andincorporates information for detecting and addressing new forms ofmalware.) Such updating 28 may sometimes be performed on remoteresources by an application server; e.g., a webmail provider may updateits back-end software frequently without involving the user or userdevices, and even without the awareness of the user.

The application life cycle 10 may also involve uninstallation 30,wherein the application is removed from one or more devices.Uninstallation 30 may include unmapping 32, wherein one or more devicesare deauthorized for use of the application. For instance, a webapplication may be accessible only on certain devices, and a device maybe unmapped by removing it from the authorized devices list stored onthe application server. Uninstallation 30 may also includedecommissioning 34, wherein the resources of an application may beremoved from one or more devices. Decommissioning 34 may be requested bythe user, or may be spontaneously invoked (e.g., an application may belicensed to the user only for a limited duration, and the computingenvironment may be configured to decommission the applicationautomatically upon expiration of the license term.)

Although the application life cycle has been widely utilized for a largevariety of applications, many conventional computing environments areconfigured such that the application life cycle exhibits severaldisadvantages. As one example, convention computing environments mayentail a significant amount of user participation in conducting thisapplication life cycle. During procurement 12, a computing environmentmay provide little or no support for discovering or acquiringapplications, and a user may be tasked with finding useful applicationsthrough research (e.g., web searches) and downloading applicationinstallation packages. Procurement 12 may also involve user acceptanceof a license, but this may sometimes be abrogated (e.g., a user maypreauthorize any application offered under a particular boilerplateend-user license agreement.) Modern computing environments typicallyprovide little or no support for mapping 20, and users may have toarrange for individual deployment of an application on an array ofdevices. Many conventional computing environments provide some supportfor deployment 22, such as automated installer tool. However, suchinstaller tools may still delegate to the user a considerable amount ofinteraction that may be otherwise avoidable, such as inputting userinformation (name, email address, etc.) while creating a user account ina web application, providing credit card information to purchase alicense, and inputting a serial key included with physical media, suchas an installation CD. Conventional computing environments may alsoprovide inadequate support for updating 28, which is often delegated toapplications, or even to the user-initiated discovery, downloading, andapplication of software patches. Finally, unmapping 34 anddecommissioning 34 may be facilitated by the installer app, but may belimited to per-device management; e.g., the user may have to initiateuninstallation on each device, and centrally managed deployment amongall such devices may be difficult.

These disadvantages may be exacerbated and other disadvantages may arisein the context of modern computing environment use, which is oftenextended across an array of devices. A user of a computing environmentmay cooperatively manage and utilize a workstation, a portable computersystem such as a notebook or tablet, a game console, a cellphone, and amedia player. Moreover, the user may wish to access all or part of thecomputing environment on a public workstation, or to grant access topart or all of the computing environment to other users (e.g., to allowa guest to utilize the computing environment or to access data objectsmanaged therein.) Despite the continued proliferation of devices that auser may operate in the context of a computing environment, conventionaloperating systems may provide little support for the consistentpresentation of a computing environment among such devices, and forpromoting the distribution, access, and synchronization of data objectsthereby. This limited support is particularly apparent with regard toapplications. In general, users often perform many aspects of theapplication life cycle 10 manually on each device, independently of theconfiguration of any other device. For instance, a user may configure aparticular application according to the user's preferences, butconfiguring each device on which the application in a similar manneroften involves a manual configuration of each application deployment. Inaddition, the use of multiple devices in a cooperative manner may createnew problems; e.g., a user may have a set of contact information for aperson on a first device that is inconsistent with a set of contactinformation for the same person on a second device, and may be unable toascertain which set of contact information is more current.

Recent attempts have been made to develop techniques for providingaccess to a computing environment among an array of devices in aconsistent, deployable, and extensible manner. These techniques alsoseek to provide a common set of applications among the cooperatingdevices, and a centralized service for managing the procuring,installing, using, and uninstalling of applications among such devices.The application set is not necessarily identical among various devices;e.g., a workstation may contain high-performance applications (e.g.,photo editing software and graphically intensive games) that may not runwell on a cellphone device, and the cellphone device may includeportability applications (e.g., a GPS-based mapping software) that isnot relevant to a non-portable workstation. However, many applicationsand data objects related thereto may be shared among such devices (e.g.,a calendar application configured to manage a user calendar object), andthe computing environment may be adapted to enable the distribution andsynchronization of the application and data objects among such devices.The application may also be adapted for each such device; e.g., a firstversion or configuration of the application may be oriented tohigh-performance devices such as a workstation, while a second versionor configuration of the application may be oriented to low-performancedevices with limited screen size and input capabilities. However, otherportions of the application configuration (e.g., user preferences, suchas a visual style) of the same application may be shared among thedevices, and may promote the consistency of the user experience with thecomputing environment among the various devices.

It may therefore be appreciated that a computer system may beadvantageously represented in a manner that enables the deployment ofthe computing environment, including the application set, among a set ofdevices. In one such technique, the computing environment—including aset of applications, the application resources, and data objects usedthereby—is represented in a manner that may be delivered to devices forrendering according to the capabilities of the device. Therepresentation comprises a set of objects organized according to anobject hierarchy and represented according to a common grammar. Theobjects include the data objects of the computer system, such as theuser files and data created by the user. The objects also include theexecutable binaries and class libraries comprising the operating systemcomponents, such as the shell, and the applications offered therein. Theobject also include the information specifying the user interface of acomputing environment, including shell preferences (e.g., visual themes,application launch menu, and double-click threshold), user accounts andprivileges, security information (e.g., passwords, security tokens, andcertificates), application binaries and configuration information, userdata and metadata (e.g., file sharing information), and data caches(e.g., most-recently-used file lists and browser history.) Despite thevarious nature and uses of these objects, the objects are represented ina common manner in the object hierarchy, and may be arbitrarilyorganized in the hierarchy. Thus, in contrast with conventional computersystems comprising a set of isolated data stores, each containing onetype of object (e.g., a file system containing files, a registrycontaining configuration information, and a data cache containing thebrowser history), the object hierarchy in this approach organizes allsuch objects in a common manner in the object hierarchy.

A computing environment represented in this manner may be delivered toany device and rendered in a manner suitable for the capabilities of thedevice. For instance, a workstation may render the information as arobust and general-purpose computing environment, while a publicworkstation may render a different computing environment experiencethrough a web browser (e.g., as a virtual machine that may be discardedat the end of the user's session), and a cellphone may provide a leanerinterface with quicker access to cellphone-related information (e.g.,contacts, calendar, and navigation data.) Moreover, updates to theinformation set (e.g., preference changes and updates to data filescontained therein) may be applied to the canonical source of theinformation set, and thereby propagated to all other devices to whichthe information set is delivered. Also, the devices sharing thecomputing environment may be integrated through the shared informationset, such that one device may interact with others that are identifiedin the information set; e.g., data stored on a first device may beaccessed by a second device, and a first device may be controlled by asecond device through a communications conduit. The information set maytherefore identify the collection of devices that share the computingenvironment, along with the roles, capabilities, and resources of eachdevice, to provide an integrated computing experience across apotentially large number and variety of devices.

FIG. 2 illustrates one such scenario 40, wherein the computingenvironment may be hosted by a computing environment host 42, which maystore and manage an object hierarchy 44. The computing environment host42 may also render the object hierarchy 44 in different ways on behalfof various devices, such as a cellphone device 46, a personal notebookcomputer 50, and a public workstation 54, and also on behalf ofdifferent types of users having different access privileges. Therendering of the computing environment therefore reflects a consistentcomputing environment across all devices that expose the sameapplications, user profiles, shell configuration, user data objects,etc. Thus, a user may access a full-featured version 52 of the computingenvironment through a high-performance notebook computer, astripped-down version 48 of the computing environment on a low-powercellphone device 46, and a browser-compatible and privacy-orientedversion 58 of the computing environment through a web browser 46 of apublic terminal 54. To the extent that the capabilities of each suchdevice support the rendering of the computing environment, a consistentuser interface and data set may be presented due to the rendering of theobject hierarchy 44 adjusted to the capabilities of each device. Updatesto the computing environment may be propagated back to the computingenvironment host 42, and may be automatically synchronized with otherdevices. The various devices may also cooperate by sharing locallystored data with other devices, and by controlling or being controlledby other devices. Hence, the computing environment may therefore bedevised and presented as a cloud computing architecture, comprising adevice-independent representation (a “cloud”) expressed as a consistentrendering across all devices (“clients”) that form a mesh of cooperatingportals (with device-specific properties) to the same computingenvironment. Specifically with respect to the applications of thecomputing environment, the object hierarchy 44 may include arepresentation of the application set, the application resources, andthe data objects created thereby. Moreover, the computing environmenthost 42 may apply services to the various objects comprising the objecthierarchy 44, and the common format in which the objects are stored inthe object hierarchy may facilitate consistent availability andapplication of the services regardless of the nature of the objectsapplied thereto.

In furtherance of these ends, an object hierarchy schema may be devisedfor organizing the objects of the object hierarchy in a particularmanner. For instance, objects may be devised and structured to representdata objects (such as files), users and user accounts, devices, andevents arising with the computing environment, as well as derivation,ownership, and interrelationships therebetween. The manner of organizingthe objects may give rise to particular advantages and/or reducedisadvantages with respect to other organizations of the objects.Accordingly, the object hierarchy schema according to which the objectsmay be organized is devised in view of the uses of such objects and ofthe computing environment. For instance, security permissions may bemodeled by associating respective objects with one or more user accountshaving various sets of permissions (e.g., a first user account havingread/write permissions to an object, a second user account havingread-only permissions to the object, and a third user account having nopermissions to the object.) The computing environment may be configuredto utilize the objects of an object hierarchy according to the structureand semantics of the object hierarchy schema, thereby enabling thepresentation of a deployable computing environment across a plurality ofdevices in a manner that is appropriate for the configuration andcapabilities of each device, but otherwise consistent among all suchdevices.

Within an object hierarchy of this nature, a set of applications may bemanaged in a manner consistent with the application life cycle of eachapplication. For instance, the computing environment host 42 mayfacilitate the acquisition of the application, the association of theapplication with one or more devices, and the deployment of theapplication on each device. The representation of the application as aset of objects in the object hierarchy 44 may facilitate commonapplication management tasks. As a first example, the application may bereadily deployed, and in many scenarios automatically deployed, on aplurality of computer systems and devices that are represented in theobject hierarchy 44. For instance, a first version of the applicationmay be deployed to a personal notebook computer 50; a second version ofthe application may be deployed as a web or web-enabled application foruse with a public workstation 54; and a third version of the applicationmay be deployed as a reduced-functionality application for use on alow-powered cellphone device 46. As a second example, the computingenvironment host 42 may facilitate the updating of an application (e.g.,patching of application resources with updated versions, or deploymentof new content for use with the application) by accordingly adjustingthe object hierarchy 44 and deploying the adjustments to the devices bysynchronizing the hosted and deployed versions of the object hierarchy44.

The representation of an application set as a set of objects in adeployable object hierarchy 44 may also enable new features. As a firstexample, the computing environment may enable a user to share anapplication with a second user, or an aspect of an application session,by deploying a specific portion of the object hierarchy 44 to the seconduser's device, computer system, or computing environment host 42. Forinstance, a first user may choose a set of song objects to play on afirst computer through a media player application, and may choose toshare the media player application session with a second user (e.g., bystreaming the audio of the media player application to the second user.)As a second example, the configuration of the application may besynchronized across devices and computer systems as part of the objecthierarchy. Device-independent application properties (e.g., custom wordsadded to a spell-check dictionary) may be automatically propagated toall such devices and computer systems, while device-specific applicationproperties may be specified for respective devices by the computingenvironment host 42. In this manner, the application management serviceof the computing environment host 42 may support the discovery,deployment, use, and removal of applications on various computer systemsand devices operated by one or more user. Many portions of these tasksmay be performed by adjusting the object hierarchy 44 and synchronizingits deployment to the various devices represented therein, which, as anautomated process, may provide a significant improvement in theconsistency of the computing environment and the overall userexperience.

FIG. 3 illustrates one embodiment of these techniques as an exemplarymethod 60 of managing a deployment of an application stored in anapplication store to an object hierarchy representing a computingenvironment upon a device. With reference to FIG. 2, this exemplarymethod 60 may be utilized to install and manage an application on one ormore devices, such as a cellphone device 40, a notebook computer 50, anda public workstation 54, by representing the application in a deployableobject hierarchy 44 that is (at least partially) distributed to thedevices. The exemplary method 60 begins at 62 and involves receiving 64a request to deploy the application to the device. The request may begenerated by a user of the computing environment who wishes to installthe application, by a program running in a representation of thecomputing environment on a device, by a program configured to generate anew computing environment having at least one preinstalled application,etc. The exemplary method 60 also involves acquiring 66 the applicationfrom the application store. If the application is a web application, theacquiring 66 may simply involve (e.g.) verifying the availability of theapplication at a provided URL. The exemplary method 60 also involvesmapping 68 the device represented in the object hierarchy to theapplication. The mapping 68 may involve associating the representationof the device within the object hierarchy to the representation of theapplication within the object hierarchy, creating a set of configurationinformation in the object hierarchy for the application with respect tothe device, etc.

The exemplary method 60 of FIG. 3 also involves deploying 70 theapplication in the object hierarchy. The deploying 70 may involvecreating a representation of the application within the objecthierarchy, representing one or more executable binaries in theapplication representation of the object hierarchy, further configuringthe application with respect to the device, etc. For web applications,the deploying 70 may comprise, e.g., inserting a link to the website inan application launcher representation associated with the device,and/or creating one or more cookies on the device to facilitate thepersistence of the web application between sessions. The exemplarymethod 60 also involves transmitting 72 at least a portion of the objecthierarchy to the device. For instance, a high-performance computersystem, such as a notebook computer 50, may receive a full version ofthe object hierarchy, while a comparatively low-powered cellphone device46 may receive only the portion of the object hierarchy that is relevantto the cellphone device 46, including a deployment of the newapplication that is compatible with the cellphone device 46. Havingconfigured the object hierarchy to associate the application with thedevice and having deployed the object hierarchy to the device, theexemplary method 60 therefore achieves the management of a deployedapplication with respect to the device, and so ends at 74.

FIG. 4 presents a second embodiment of these techniques, embodied as anexemplary system 86 for managing the deployment of applications storedin an application store 84 to an object hierarchy 82 representing acomputing environment upon at least one device. This scenario 80involves three deployable applications: a calculator application, acalendar application, and a media player application. These applicationsmay be made available within a computing environment represented uponthree devices: a cellphone device, a notebook computer device, and apublic workstation. Within this scenario 80, the applications are hostedby an application store 86 that represents at least one application.These applications may be deployed within the computing environment andupon the devices upon which the computing environment may be rendered byreconfiguring the object hierarchy 82.

Within this scenario 80, the application management system 86 mayoperate to achieve the deployment of one or more applications within theobject hierarchy. The exemplary system 86 comprises an applicationacquisition component 88, which is configured to receive a request toinstall an application, and to acquire the application from theapplication store 84. The application acquisition component 88 may alsodetermine whether the request satisfies any prerequisites (e.g., whetherthe application can run on the requested device; whether the user ispermitted to install and run the application, in view of varioussecurity privileges of the user and licensing issues; etc.) Theexemplary system 86 of FIG. 4 also includes an application mappingcomponent 90, which is configured to map at least one device representedin the object hierarchy 82 to at least one installed application. Forinstance, if the calculator application is already included in theobject hierarchy 82, the application mapping component 90 may create anassociation within the object hierarchy 82 between the calculatorapplication and one or more devices upon which the application is to beprovided.) If the calculator application is not already included in theobject hierarchy 82, the exemplary system 86 may also create arepresentation of the calculator application in the object hierarchy 82before performing the mapping, e.g., by copying representations of theexecutable binaries or links to a web application website into theobject hierarchy 82.) The exemplary system 86 also includes anapplication deployment component 92 configured to deploy the at leastone installed application in the object hierarchy 82. The deployment mayinvolve, e.g., creating device-specific configuration information withinthe object hierarchy for the newly mapped devices; associating the newlymapped device with device-independent configuration information;inserting the application in an application launcher to be rendered onone or more devices; etc. Having associated a representation of thedevice in the object hierarchy 82 with a representation of theapplication set represented in the computing environment rendered by thedevice, the exemplary system 86 thereby achieves the management ofdeployed applications in the object hierarchy representing the computingenvironment.

The techniques described herein may be implemented with variations inmany aspects, and some variations may present additional advantagesand/or reduce disadvantages with respect to other variations of theseand other techniques. These variations may be included in variousembodiments, such as the exemplary method 60 of FIG. 3 and the exemplarysystem 86 of FIG. 4, and may be compatible with other such variations topresent several such additional advantages and/or reduced disadvantages.Those of ordinary skill in the art may therefore devise many suchembodiments in accordance with the techniques discussed herein.

A first aspect that may vary among implementations of these techniquesrelates to the architecture of the application management server throughwhich the application management service is provided. As illustrated inFIG. 4, the application management system 84 may interact with anapplication store 82 having various applications, may request andreceive an application stored therein, and may deploy the application tothe object hierarchy 82. In this scenario 80, the application managementsystem 84 is embodied as a standalone interface among one or moreapplication stores and the computing environment host 86. However, otherarchitectures and system factorings may also be suitable forimplementing these techniques.

FIG. 5 illustrates a second exemplary architecture 100, wherein theapplication management service 86 also serves as the application store84, and therefore contains various applications, such as a calculatorapplication 102 and a calendar application 104, that may be deployed tothe object hierarchy 82. This embodiment may present an advantage of atighter integration of the application acquisition service with theapplications that are available for deployment.

FIG. 6 illustrates a third exemplary architecture 110, wherein thecomputing environment host 42 incorporates the application managementservice 86. The computing environment host 42 may therefore store boththe object hierarchy 82 and the services of the application managementservice 86, such as the application acquisition component 88, theapplication mapping component 90, and the application deploymentcomponent 92. In this third exemplary architecture 110, the application112 may be directly received from a device, such as through a requestinitiated by the user within the computing environment represented onthe device. The computing environment host 42 may receive this requestand process it through the components of the application managementservice 86, which may update the object hierarchy 82 stored in thecomputing environment host 42. The updated object hierarchy 82 may thenbe synchronized with the device to complete the deployment of theapplication to the device. These and other system factorings may bedevised by those of ordinary skill in the art while implementing thetechniques discussed herein.

A second aspect that may vary among implementations of these techniquesrelates to variations in the basic components of the applicationmanagement, including acquisition, mapping, and deployment. As a firstvariation of this aspect, the acquiring application typically entailsreceiving a request to deploy the application and acquiring theapplication to be deployed to the object hierarchy with respect to aparticular device. However, the acquiring may also include presenting anapplication license to a user through the device, such as displaying theterms and conditions of an end-user license agreement for theapplication. The acquiring may also include requesting the user toaccept the application license as a prerequisite of deployment; and uponreceiving an acceptance of the application license, the acquiring mayinclude recording the acceptance of the application license, such as bynotifying an application license server. This acceptance might bereceived as an acknowledgment from the user, or as an automatedacceptance, e.g., where the user has preauthorized the acceptance of anyapplication under a particular application license (e.g., anyapplication provided under a particular version of the GNU PublicLicense.) The acquiring may also include brokering an acquisitiontransaction with a user of the at least one device, such as ane-commerce purchase of a license to the application. The acquiring mayalso include generating a user account representing a user of theapplication, which may be particularly advantageous for acquiring accessto a web application, such as a webmail application that is entirelyhosted on a webmail server and provided through a browser in thecomputing environment.

As a second variation of this second aspect, the mapping of anapplication typically involves associating the application with one ormore devices represented in the object hierarchy. However, the mappingmay also include an examination of device-specific conditions, such aswhether the application is available in a version that is compatiblewith the device, and whether the application or a variant thereof (suchas an earlier version) is already available on the device. The mappingmay also involve acquiring additional resources in order to promote themapping of the application to a new device, such as a new version of theapplication binary that may be compatible with the device, or additionalcomponents on which the application depends that may be deployed to thedevice (e.g., a supporting runtime that may be retrieved from anotherserver.) The mapping may also involve an activation of the applicationthrough an application activation server, which may authorize theexecution of the application on a particular device, such as byproviding an authenticated certificate that is validated by theapplication on the device upon launching.

As a third variation of this second aspect, the deploying of anapplication typically involves deploying the application within theobject hierarchy, such as by inserting a representation of thecomponents of the application in the object hierarchy. Even typicallyorganized applications may be structured in numerous ways. A smallutility may comprise a single executable binary, which may be wholly orpartially compiled, or may be included as source code that is compiledlocally on each device. This executable binary may be represented, e.g.,as source code module, a parse tree, intermediate language instructionsrepresenting a partially compiled binary, a wholly compiled binary, etc.A larger utility might comprise a set of resources, such as one or moreexecutable binaries; shared assemblies that may be registered in aglobal assembly cache; application resources such as icons, soundobjects, pictures, documents, and video; help files; data resourcesstored in one or more structured data stores, such as a relationaldatabase; ancillary application resources, such as a language dictionaryfile for a spell-checking tool in a word processing application; anapplication manifest that serves as an index of the resources specifiedtherein; etc. Moreover, an application may include several versions ofan executable binary, each of which may be targeted to a particularplatform; for instance, an application might include a full-featuredversion for use on a more powerful device such as a notebook computer 50and a reduced functionality version for use on a low-powered cellphonedevice 46. The application may also include several sets ofconfiguration information, each targeting a specific platform. Theapplication may be presented as a standalone installer package, or as aninstallable archive that may be deployed by a device-based installer, oras a set of one or more resources that may be utilized in any location,etc.

The object hierarchy may also include applications of a lessconventional structure. For example, a game application might include alarge number of graphics resources, such as bitmap textures and meshesfor constructing complex three-dimensional environments and objectsrepresented therein. A web-enabled application may include a set of webpages, which may contain portions of inline code or may referenceexternal code resources, such as Java objects included in source code orcompiled form. Such an application might also be represented simply as areference to a website where such resources are available. A web-enabledapplication might also be structured through a markup language, such asthe Extensible Application Markup Language (XAML), which may be compiledor interpretively executed on a device either as an application or anapplet hosted in a web browser. Finally, a web application might berepresented simply as one or more URLs referencing one or more websiteson which part or all of the application is deployed, which may beaccessed on the device through a web browser; alternatively oradditionally, some resources may be included for device deployment, suchas cookies that may locally stored to persist the state of a webapplication between sessions.

Because the resources comprising an application may be diverse, thedeployment of the application in the object hierarchy may be similarlyrobust. For example, text resources may be included as plaintext, or maybe compressed with a general or special-purpose compression utility.Binary resources may be presented as serialized binary code, may becompressed with a binary compression utility, may be transcoded (e.g.,via Uuencode or MIME), etc. Hierarchically organized objects may bestructured according to a hierarchical formatting, such as XML, or maybe serialized as a single hierarchical object. Large objects may beincluded as atomic units, compressed, transcoded (e.g., a movie file maybe reencoded at a lower bitrate to conserve space), segmented intoportions that may be individually transmitted to a device over time oron an ad hoc basis, etc. Resources may be included in the objecthierarchy, or may be inserted as a reference to a server hosting theresource that may be accessed as needed. Large sets of numerous objectsmay be included as an archive (e.g., a compressed file containingseveral thousand objects.) Web-based applications may be represented asone or more URLs where the components of the application are available;alternatively or additionally, a snapshot of the web application may becaptured and included in the object hierarchy to provide a cachedversion of the application or to enable offline access to theapplication. Those of ordinary skill in the art may be able to devisemany techniques for representing an application in an object hierarchywhile implementing the techniques discussed herein.

In addition to representing the application in the object hierarchy, thedeploying may also include configuring the application with respect tothe device and/or with respect to the user. For instance, a new set ofconfiguration information may be formulated for the device, or anappropriate set of configuration information in a library ofconfiguration sets may be designated for use by the device. FIG. 7illustrates one such scenario 120, wherein the object hierarchy 82includes a representation of a calendar application comprising twoexecutable binaries (one compiled executable for local native execution,and one client-side browser script for slower but more standardizedaccess through a standard web browser) and two configuration sets (afull functionality configuration set for high-performance devices and aportable configuration set for low-power mobile devices.) The objecthierarchy 82 also includes a configuration set comprisingdevice-independent settings for use with any device, such as a preferredcolor scheme selected by the user. The object hierarchy 82 also containsrepresentations of two devices on which the computing environment may berendered: a low-power cellphone device 46 and a high-performancenotebook computer 50.

In deploying the application within the object hierarchy 82 for thesedevices, the application deployment component 92 may configure theapplication for particular use on each device. For instance, thecalendar application may be deployed for the cellphone device 46 byassociating it with the client-side browser script executable binary,which may run within a web browser application of the cellphone device46, and with the portable configuration set for low-power devices.Similarly, the calendar application may be deployed for the notebookcomputer 50 by associating it with the compiled executable binary, andwith the full functionality configuration set that may providecomputationally intensive features that the notebook computer 50 iscapable of rendering. However, both devices may incorporate thedevice-independent configuration set to present a consistent set ofdevice-independent features, thereby promoting a consistent computingenvironment among all such devices of the computing mesh. Those ofordinary skill in the art may be able to devise additional variations inthe acquisition, mapping, and deployment of applications in the objecthierarchy 82 while implementing the techniques discussed herein.

A third aspect that may vary among implementations of these techniquesrelates to additional features that may be added to the basic componentsof such embodiments. In addition to the basic management services(acquisition, mapping, and deployment), additional services may beprovided for application management, which may facilitate the user andthe computer system in the management of the application life cycle.

As a first variation of this third aspect, the application managementservice may also serve as the computing environment host, such asillustrated in the third exemplary architecture 110 of FIG. 6. In thisfirst variation, the application management service also comprises anobject hierarchy store that is configured to store the object hierarchy,and an object hierarchy transmission component that is configured totransmit at least a portion of the object hierarchy to the devices(e.g., by synchronizing the updated object hierarchy with the objecthierarchy stored on each device.) The transmission of the portion of theobject hierarchy comprising the deployed application to the device mayachieve the installation and deployment of the application to thedevice.

As a second variation of this third aspect, the application managementservice may also facilitate the discovery of applications that may be ofinterest to the user. For instance, a method of managing the deploymentof applications to an object hierarchy (such as the exemplary method 60of FIG. 3) may include a querying aspect, wherein the method isconfigured, upon receiving an application query from a user, to selectapplications satisfying the application query, and to present theselected applications to the user. Similarly, a system for managing thedeployment of applications to an object hierarchy (such as the exemplarysystem 86 of FIG. 4) may include an application discovery component,which may be configured to receive from a user an application query,select applications satisfying the application query, and presentselected applications to the user. The user may then choose to acquireone or more of the selected applications, which the applicationmanagement system may deploy to the object hierarchy.

FIG. 8 illustrates one such scenario 130, wherein a user 132 wishes toidentify an audio player application that may be compatible with theuser's cellphone device 46. The user 132 may therefore issue anapplication query 136 to an application discovery component 134 of theapplication management service 86, such as a query for media playerapplications that are compatible with cellphone devices. The applicationdiscovery component 134 may communicate with an application store 84 toidentify applications satisfying the application query 136, such as anaudio player application for cellphone devices and a video playerapplication for cellphone devices. The application discovery component134 may therefore provide a response 138 presenting the applications tothe user 132. The user 132 may reply to the application managementservice 86 with a selection 140 of one or more of the discoveredapplications to be deployed to the cellphone device 46. The applicationmanagement service 86 may then acquire the selected application (in thisscenario 130, the audio player application for cellphone devices), andmay deploy the application to the object hierarchy 142, which may thenbe transmitted to the cellphone device 46 to complete the deployment ofthe selected application. Those of ordinary skill in the art may be ableto devise other approaches for facilitating the discovery ofapplications while implementing the techniques discussed herein.

As a third variation of this third aspect, the application managementservice may also facilitate the launching of the application. Forinstance, an exemplary system embodying the application managementservice may include an application launching component, which may beconfigured to launch the application on the at least one device. Theapplication launching component may comprise, e.g., a runtime configuredto provide a platform for the device and to facilitate the execution ofthe application thereupon. For instance, an application may be deployedin the service as a client-side browser script, and the applicationmanagement service may include with the object hierarchy a browserruntime within which the browser script may be interpretively executed.As another example, the application may be represented as source code,and the application launching component may comprise a device-specificcompiler that, upon launching the application on the device, compilesthe source code into an executable binary that may be executed on thedevice. Moreover, the application launching component may also store thecompiled executable binary, such as in an assembly cache, and mayrespond to subsequent requests to launch the application by fetching thestored executable binary instead of recompiling the application. As athird example, a web-enabled application may comprise a client-sidefront end configured to access a remote resource, and the applicationlaunching component may attempt to connect to the remote resource and toverify its availability to the device upon launching the application.Those of ordinary skill in the art may be able to devise many ways offacilitating application launching on a device while implementing thetechniques discussed herein.

As a fourth variation of this third aspect, the application managementservice may also facilitate the sharing of aspects of the applicationwith other users. Such application sharing may occur in many scenarios.As a first example, the sharing may involve sharing of the fullapplication (including all resources and data objects associatedtherewith.) As a second example, the sharing may involve sharing aversion of the application with another user; e.g., the first user mayhave purchased a license to use the application, and may share with thesecond user a reduced functionality version of the application that maydemonstrate some features of the application to encourage the seconduser to license the application. As a third example, the sharing mayinvolve sharing one or more data objects associated with theapplication, such as media objects created with the application. Thesecond user may then use the same application or another application torender the media objects within the second user's computing environment.As a fourth example, the sharing may involve sharing a configuration ofthe application with another user; e.g., several members of a softwaredevelopment team may utilize a particular configuration of an integrateddevelopment environment while working as a team in the development ofthe software. As a fifth example, the sharing may involve sharing asession of the application with another user; e.g., two users maycollaborate in the preparation of a text document, and a first user mayshare a session of a word processing application with the second user topromote live interaction between the users. These sharing scenarios mayalso arise among several users of a computing environment (representedby a single object hierarchy), or among users of two or more computingenvironments (represented by multiple object hierarchies), or may arisewhen sharing a portion of an object hierarchy representing a computingenvironment with users of computing environments represented in unknownmanners by providing data objects of the shared computing environmentthrough a common communications protocol, such as the File TransferProtocol (FTP.) These and other sharing scenarios may be devised bythose of ordinary skill in the art while implementing the techniquesdiscussed herein.

FIG. 9 illustrates an application sharing scenario 150, wherein a firstuser of a first object hierarchy 152 has acquired a media playerapplication and some media objects, in the form of various songs createdby various artists, wherein such media objects are encoded in ahigh-fidelity manner (i.e., at a 320 kbps encoding rate.) The first userhas also created a media player session, such as a podcast, whichreferences a few of the objects represented in the media section of thefirst object hierarchy 152. The first user may wish to share thispodcast with a second user of a second object hierarchy 154. Theapplication sharing may therefore involve a copying of the media playersession from the first object hierarchy 152 to the second objecthierarchy 154. Because the media player session references some mediaobjects stored in the first object hierarchy 152, the applicationsharing may also involve sharing the media objects referenced therein bycopying the media objects to the second object hierarchy 154. However,the digital rights associated with the media objects may permit thetransmission of the media objects to other object hierarchies only at alower fidelity; accordingly, the computing environment may transmit tothe second object hierarchy versions of the media objects transcoded tolower quality (e.g., a 24 kbps encoding rate.) Additionally, the secondobject hierarchy 154 may not include a media player application for thetypes of audio represented by the media objects. Accordingly, the firstobject hierarchy 152 may share a version of the media player applicationwith the second object hierarchy 154; however, a reduced functionalityversion may be transmitted to the second user in compliance with theend-user license agreement of the media player application acquired bythe first user. In this manner, the application, the media objectsrendered thereby, and the application session generated by the firstuser may be shared with the second user in an automated manner bytransmitting portions of the first object hierarchy 152 to the secondobject hierarchy 154, while complying with the digital rights of thecomponents relating to the application session.

As a fifth variation of this third aspect, the application managementservice may facilitate the updating of applications with new content.Applications are often updated to new versions and with new content bypatching binaries, inserting new resources, and altering or removingexisting resources. Such updating may be performed by the applicationmanagement service by obtaining application updates and deploying theupdates to applications represented in the object hierarchy (e.g., byupdating application resources contained in the object hierarchy, and/orinserting new resources as new objects in the object hierarchy.) Theupdates may be applied at the request of a user, who may have acquirednew content to be exposed by the application; or may be retrieved by theapplication management service through a query to an application store;or may be pushed to the application management service b by anapplication store or an administration server; etc. The updated objecthierarchy may then be transmitted to one or more devices, and maythereby achieve an updating of the applications of the computingenvironment with reduced reliance on the involvement of the user. Thoseof ordinary skill in the art may be able to devise many ways of updatingthe applications represented in the object hierarchy while implementingthe techniques discussed herein.

As a sixth variation of this third aspect, the application managementservice may also permit the revocation of applications from thecomputing environment. This revocation may involve many scenarios, suchas removing a mapping of an application to a device, de-authorizing adevice in an authorized devices list of an application activationserver, removing application resources from a device (e.g., bywithholding from the device a portion of the object hierarchy containingthe application resources), and completely decommissioning theapplication by removing all of the application resources from the objecthierarchy and from all mapped devices. The revocation may be at therequest of a user who wishes to uninstall the application from one ormore devices, or upon expiration of a limited duration software license,or upon removing a device from the computing mesh, etc. As an exemplaryembodiment of this variation, an application management system mayinclude an application revocation component configured to revoke theapplication from at least one device in any of these manners. Those ofordinary skill in the art may be able to devise many ways of revokingapplications from within computing environments represented by objecthierarchies while implementing the techniques discussed herein.

These variations of these aspects may be included in many embodiments ofthe techniques discussed herein, including the exemplary method 60 ofFIG. 3 and the exemplary system 86 of FIG. 4. Moreover, several suchvariations may be implemented in combination, and with other variationsof these and other aspects of these techniques, to provide severaladvantages and/or reduce disadvantages with respect to the more basicembodiments illustrated in FIGS. 3-4. Some combinations may also providesynergistic advantages; for instance, an application discovery componentmay be cooperatively linked to an application acquisition component topresent the discovery, purchasing, license acceptance, and user accountcreation of the procurement of an application as an integrated userexperience.

FIG. 10 illustrates an exemplary system 160 for managing the deploymentof applications in an object hierarchy 44 representing a computingenvironment upon at least one device (such as a cellphone device 46, anotebook computer 50, and a public workstation 54.) The exemplary system160 of FIG. 10 embodies many of the variations discussed herein. Theexemplary system 160 includes an object hierarchy store 82 configured tostore the object hierarchy 44, and an application store 84 representingat least one application, respective applications comprising at leastone application resource. The exemplary system 160 also includes anapplication discovery component 134, which is configured to receive froma user an application query, to select applications satisfying theapplication query, and to present selected applications to the user. Theexemplary system 160 also includes an application acquisition component88, which is configured to receive a request to install an application,to present an application license to a user through the device, and,upon receiving an acceptance of the application license from the user,to record the acceptance of the application license. The applicationacquisition component 88 is also configured to generate a user accountrepresenting a user of the application, and to broker an acquisitiontransaction with a user of the at least one device. Together, theapplication discovery component 134 and application acquisitioncomponent 88 facilitate the procurement of an application in the typicalapplication life cycle.

The exemplary system 160 of FIG. 10 also includes an application mappingcomponent 90, which is configured to map at least one device representedin the object hierarchy 44 to at least one installed application. Theexemplary system 160 also includes an application deployment component92, which is configured to deploy the at least one installed applicationin the object hierarchy 44 by configuring the application with respectto at least one of the device and a user of the device. Together, theapplication mapping component 90 and the application deploymentcomponent 92 facilitate the installation of the application within theobject hierarchy in the typical application life cycle.

The exemplary system 160 of FIG. 10 also includes an applicationlaunching component 162, which is configured to launch the applicationon the at least one device. The exemplary system 160 also includes anapplication sharing component 164, which is configured to receive arequest to share an application with a user, and, upon receiving therequest to share the application, sharing with the user a portion of theobject hierarchy comprising at least one of: the application, anapplication session, an application configuration, and at least one dataobject generated by the application. The exemplary system 160 alsoincludes an application updating component 166, which is configured toupdate at least one application resource in the object hierarchy 44.Together, the application launching component 162, application sharingcomponent 164, and application updating component 166 facilitate theexecution of the application on one or more devices in the typicalapplication life cycle.

The exemplary system 160 of FIG. 10 also includes an applicationrevocation component 168, which is configured to revoke the application(e.g., by de-mapping the application from the representation of one ormore devices in the object hierarchy, removing application resourcesfrom one or more devices, and/or completely decommissioning theapplication by completely removing it from the object hierarchy.) Theapplication revocation component 168 thereby facilitates theuninstallation of the application in the typical application life cycle.

Finally, the exemplary system 160 also includes an object hierarchytransmission component 170, which is configured to transmit at least aportion of the object hierarchy 44 to the at least one device. Theobject hierarchy 44 may be modified by many of the components of theapplication management system 160, and the modifications of the objecthierarchy 44 may be synchronized with the one or more devicesrepresented therein to effectuate the updating of the application set ofthe computing environment. By combining these many variations of thetechniques discussed herein, the exemplary system 160 thereby providescomprehensive application management services for administrating a largeset of applications through the typical application life cycle amongmany devices comprising a computing mesh.

Although the subject matter has been described in language specific tostructural features and/or methodological acts, it is to be understoodthat the subject matter defined in the appended claims is notnecessarily limited to the specific features or acts described above.Rather, the specific features and acts described above are disclosed asexample forms of implementing the claims.

As used in this application, the terms “component,” “module,” “system”,“interface”, and the like are generally intended to refer to acomputer-related entity, either hardware, a combination of hardware andsoftware, software, or software in execution. For example, a componentmay be, but is not limited to being, a process running on a processor, aprocessor, an object, an executable, a thread of execution, a program,and/or a computer. By way of illustration, both an application runningon a controller and the controller can be a component. One or morecomponents may reside within a process and/or thread of execution and acomponent may be localized on one computer and/or distributed betweentwo or more computers.

Furthermore, the claimed subject matter may be implemented as a method,apparatus, or article of manufacture using standard programming and/orengineering techniques to produce software, firmware, hardware, or anycombination thereof to control a computer to implement the disclosedsubject matter. The term “article of manufacture” as used herein isintended to encompass a computer program accessible from anycomputer-readable device, carrier, or media. Of course, those skilled inthe art will recognize many modifications may be made to thisconfiguration without departing from the scope or spirit of the claimedsubject matter.

FIG. 11 and the following discussion provide a brief, generaldescription of a suitable computing environment to implement embodimentsof one or more of the provisions set forth herein. The operatingenvironment of FIG. 11 is only one example of a suitable operatingenvironment and is not intended to suggest any limitation as to thescope of use or functionality of the operating environment. Examplecomputing devices include, but are not limited to, personal computers,server computers, hand-held or laptop devices, mobile devices (such asmobile phones, Personal Digital Assistants (PDAs), media players, andthe like), multiprocessor systems, consumer electronics, mini computers,mainframe computers, distributed computing environments that include anyof the above systems or devices, and the like.

Although not required, embodiments are described in the general contextof “computer readable instructions” being executed by one or morecomputing devices. Computer readable instructions may be distributed viacomputer readable media (discussed below). Computer readableinstructions may be implemented as program modules, such as functions,objects, Application Programming Interfaces (APIs), data structures, andthe like, that perform particular tasks or implement particular abstractdata types. Typically, the functionality of the computer readableinstructions may be combined or distributed as desired in variousenvironments.

FIG. 11 illustrates an example of a system 180 comprising a computingdevice 182 configured to implement one or more embodiments providedherein. In one configuration, computing device 182 includes at least oneprocessing unit 186 and memory 188. Depending on the exact configurationand type of computing device, memory 188 may be volatile (such as RAM,for example), non-volatile (such as ROM, flash memory, etc., forexample) or some combination of the two. This configuration isillustrated in FIG. 11 by dashed line 184.

In other embodiments, device 182 may include additional features and/orfunctionality. For example, device 182 may also include additionalstorage (e.g., removable and/or non-removable) including, but notlimited to, magnetic storage, optical storage, and the like. Suchadditional storage is illustrated in FIG. 11 by storage 190. In oneembodiment, computer readable instructions to implement one or moreembodiments provided herein may be in storage 190. Storage 190 may alsostore other computer readable instructions to implement an operatingsystem, an application program, and the like. Computer readableinstructions may be loaded in memory 188 for execution by processingunit 186, for example.

The term “computer readable media” as used herein includes computerstorage media. Computer storage media includes volatile and nonvolatile,removable and non-removable media implemented in any method ortechnology for storage of information such as computer readableinstructions or other data. Memory 188 and storage 190 are examples ofcomputer storage media. Computer storage media includes, but is notlimited to, RAM, ROM, EEPROM, flash memory or other memory technology,CD-ROM, Digital Versatile Disks (DVDs) or other optical storage,magnetic cassettes, magnetic tape, magnetic disk storage or othermagnetic storage devices, or any other medium which can be used to storethe desired information and which can be accessed by device 182. Anysuch computer storage media may be part of device 182.

Device 182 may also include communication connection(s) 196 that allowsdevice 182 to communicate with other devices. Communicationconnection(s) 196 may include, but is not limited to, a modem, a NetworkInterface Card (NIC), an integrated network interface, a radio frequencytransmitter/receiver, an infrared port, a USB connection, or otherinterfaces for connecting computing device 182 to other computingdevices. Communication connection(s) 196 may include a wired connectionor a wireless connection. Communication connection(s) 196 may transmitand/or receive communication media.

The term “computer readable media” may include communication media.Communication media typically embodies computer readable instructions orother data in a “modulated data signal” such as a carrier wave or othertransport mechanism and includes any information delivery media. Theterm “modulated data signal” may include a signal that has one or moreof its characteristics set or changed in such a manner as to encodeinformation in the signal.

Device 182 may include input device(s) 194 such as keyboard, mouse, pen,voice input device, touch input device, infrared cameras, video inputdevices, and/or any other input device. Output device(s) 192 such as oneor more displays, speakers, printers, and/or any other output device mayalso be included in device 182. Input device(s) 194 and output device(s)192 may be connected to device 182 via a wired connection, wirelessconnection, or any combination thereof. In one embodiment, an inputdevice or an output device from another computing device may be used asinput device(s) 194 or output device(s) 192 for computing device 182.

Components of computing device 182 may be connected by variousinterconnects, such as a bus. Such interconnects may include aPeripheral Component Interconnect (PCI), such as PCI Express, aUniversal Serial Bus (USB), firewire (IEEE 1394), an optical busstructure, and the like. In another embodiment, components of computingdevice 182 may be interconnected by a network. For example, memory 188may be comprised of multiple physical memory units located in differentphysical locations interconnected by a network.

Those skilled in the art will realize that storage devices utilized tostore computer readable instructions may be distributed across anetwork. For example, a computing device 200 accessible via network 198may store computer readable instructions to implement one or moreembodiments provided herein. Computing device 182 may access computingdevice 100 and download a part or all of the computer readableinstructions for execution. Alternatively, computing device 182 maydownload pieces of the computer readable instructions, as needed, orsome instructions may be executed at computing device 182 and some atcomputing device 200.

Various operations of embodiments are provided herein. In oneembodiment, one or more of the operations described may constitutecomputer readable instructions stored on one or more computer readablemedia, which if executed by a computing device, will cause the computingdevice to perform the operations described. The order in which some orall of the operations are described should not be construed as to implythat these operations are necessarily order dependent. Alternativeordering will be appreciated by one skilled in the art having thebenefit of this description. Further, it will be understood that not alloperations are necessarily present in each embodiment provided herein.

Moreover, the word “exemplary” is used herein to mean serving as anexample, instance, or illustration. Any aspect or design describedherein as “exemplary” is not necessarily to be construed as advantageousover other aspects or designs. Rather, use of the word exemplary isintended to present concepts in a concrete fashion. As used in thisapplication, the term “or” is intended to mean an inclusive “or” ratherthan an exclusive “or”. That is, unless specified otherwise, or clearfrom context, “X employs A or B” is intended to mean any of the naturalinclusive permutations. That is, if X employs A; X employs B; or Xemploys both A and B, then “X employs A or B” is satisfied under any ofthe foregoing instances. In addition, the articles “a” and “an” as usedin this application and the appended claims may generally be construedto mean “one or more” unless specified otherwise or clear from contextto be directed to a singular form.

Also, although the disclosure has been shown and described with respectto one or more implementations, equivalent alterations and modificationswill occur to others skilled in the art based upon a reading andunderstanding of this specification and the annexed drawings. Thedisclosure includes all such modifications and alterations and islimited only by the scope of the following claims. In particular regardto the various functions performed by the above described components(e.g., elements, resources, etc.), the terms used to describe suchcomponents are intended to correspond, unless otherwise indicated, toany component which performs the specified function of the describedcomponent (e.g., that is functionally equivalent), even though notstructurally equivalent to the disclosed structure which performs thefunction in the herein illustrated exemplary implementations of thedisclosure. In addition, while a particular feature of the disclosuremay have been disclosed with respect to only one of severalimplementations, such feature may be combined with one or more otherfeatures of the other implementations as may be desired and advantageousfor any given or particular application. Furthermore, to the extent thatthe terms “includes”, “having”, “has”, “with”, or variants thereof areused in either the detailed description or the claims, such terms areintended to be inclusive in a manner similar to the term “comprising.”

What is claimed is:
 1. A method of sharing an application comprising:storing, on a first device, an object hierarchy comprising a firstversion of the application, a reduced-functionality second version ofthe application, and application-specific data objects; determining toshare the reduced-functionality second version of the application with asecond device; and synchronizing, to the second device, a selectedportion of the object hierarchy that includes the reduced-functionalitysecond version of the application and the application-specific dataobjects.
 2. The method of claim 1, wherein determining to share thereduced-functionality second version of the application comprisesdetermining the second device is not associated with a license to theapplication.
 3. The method of claim 1, wherein the synchronizedapplication-specific data objects are reduced-quality versions of theapplication-specific data objects of the object hierarchy.
 4. The methodof claim 3, further comprising: determining digital rights associatedwith the application-specific data objects; and determining tosynchronize the reduced-quality versions of the application-specificdata objects based on the digital rights.
 5. The method of claim 1,comprising: receiving a request to share the application with the seconddevice; and in response to the request, determining to share thereduced-functionality second version of the application with the seconddevice.
 6. The method of claim 5, wherein determining to share thereduced-functionality second version of the application comprisesdetermining the second device is not associated with a license to theapplication.
 7. The method of claim 1, wherein the application is amedia player application, wherein the synchronized selected portion ofthe object hierarchy includes a media player session object, and whereinthe application-specific data objects are media objects, the methodfurther comprising: determining that the media objects are associatedwith the media player session object; and including the media objects inthe selected portion of the object hierarchy based on the determinationthat the media objects are associated with the media player sessionobject.
 8. The method of claim 7, further comprising: transcoding themedia objects in the selected portion of the object hierarchy to a lowerfidelity prior to synchronizing the selected portion of the objecthierarchy.
 9. The method of claim 8, further comprising: determiningdigital rights associated with the media objects; and determining totranscode the media objects in the selected portion of the objecthierarchy to a lower fidelity based on the digital rights.
 10. A systemfor managing sharing of an application, the system comprising: anapplication mapping component to generate an object hierarchy thatincludes a first version of the application and a reduced-functionalitysecond version of the application; an application deployment componentto deploy the object hierarchy to a second device by: determining toshare the reduced-functionality second version of the application with asecond device; and synchronizing, to the second device, a selectedportion of the object hierarchy that includes the reduced-functionalitysecond version of the application.
 11. The system of claim 10, whereindetermining to share the reduced-functionality second version of theapplication comprises determining the second device is not associatedwith a license to the application.
 12. The system of claim 10, whereinthe selected portion of the object hierarchy includes reduced-qualityversions of application-specific data objects.
 13. The system of claim12, the application deployment component further deploying the objecthierarchy to a second device by: determining digital rights associatedwith the application-specific data objects; and determining tosynchronize the reduced-quality versions of the application-specificdata objects based on the digital rights.
 14. The system of claim 10,the application deployment component further deploying the objecthierarchy to a second device by: receiving a request to share theapplication with the second device; and in response to the request,determining the second device is not associated with a license to theapplication; and in response to the determination that the second deviceis not associated with a license to the application, determining toshare the reduced-functionality second version of the application. 15.The system of claim 10, wherein the application is a media playerapplication, wherein the synchronized selected portion of the objecthierarchy includes a media player session object and media objects, theapplication deployment component further deploying the object hierarchyto a second device by: determining that the media objects are associatedwith the media player session object; and including the media objects inthe selected portion of the object hierarchy based on the determinationthat the media objects are associated with the media player sessionobject.
 16. The system of claim 15, the application deployment componentfurther deploying the object hierarchy to a second device by:determining digital rights associated with the media objects;determining to transcode the media objects in the selected portion ofthe object hierarchy to a lower fidelity based on the digital rights;and transcoding the media objects in the selected portion of the objecthierarchy to a lower fidelity prior to synchronizing the selectedportion of the object hierarchy.
 17. A server to share an application,the server comprising: a processor; and a memory storing instructionsthat, when executed by the processor, provide a system comprising: anapplication mapping component to generate an object hierarchy thatincludes a first version of the application, a reduced-functionalitysecond version of the application, and application-specific dataobjects; an application deployment component to deploy the objecthierarchy to a second device by: determining to share thereduced-functionality second version of the application with a seconddevice; and synchronizing, to the second device, a selected portion ofthe object hierarchy that includes the reduced-functionality secondversion of the application and the application-specific data objects.18. The server of claim 17, the application deployment component furtherdeploying the object hierarchy to a second device by: determiningdigital rights associated with the application-specific data objects;and determining to synchronize the reduced-quality versions of theapplication-specific data objects based on the digital rights.
 19. Theserver of claim 17, the application deployment component furtherdeploying the object hierarchy to a second device by: receiving arequest to share the application with the second device; and in responseto the request, determining the second device is not associated with alicense to the application; and in response to the determination thatthe second device is not associated with a license to the application,determining to share the reduced-functionality second version of theapplication.
 20. The server of claim 19, wherein the application is amedia player application, wherein the synchronized selected portion ofthe object hierarchy includes a media player session object, and whereinthe application-specific data objects are media objects, the applicationdeployment component further deploying the object hierarchy to a seconddevice by: determining that the media objects are associated with themedia player session object; including the media objects in the selectedportion of the object hierarchy based on the determination that themedia objects are associated with the media player session object;determining digital rights associated with the media objects;determining to transcode the media objects in the selected portion ofthe object hierarchy to a lower fidelity based on the digital rights;and transcoding the media objects in the selected portion of the objecthierarchy to the lower fidelity prior to synchronizing the selectedportion of the object hierarchy.